package com.zzuli.yxy.entity;
import com.baomidou.mybatisplus.annotation.TableField;
//import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * 评论表
 * @auther pony
 * @create 2023-05-03 22:12
 * 关联关系
 * relevance：关联字段，由 table_type 、type、targetId 决定关联的内容
 *
 * table_type：决定这是一张什么评论表，
 *      table_type=1：歌曲评论表， relevance 此时关联着歌曲 id
 *      table_type=2：专辑评论表， relevance 此时关联着专辑 id
 *      table_type=3：歌单评论表， relevance 此时关联着歌单 id
 *
 * type 和 targetId：决定这条评论是什么类型的，评论、评论的回复、回复的回复
 *      type=1、targetId=0： 评论         relevance 此时关联着歌曲id或专辑id或歌单id
 *      type=2、targetId=0： 评论的回复    relevance 此时关联着被回复的评论的Id
 *      type=2、targetId!=0：回复的回复    relevance 此时关联着被回复的评论的Id        targetId 关联着被回复用户的id，即userId
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Comment {
    private Integer id; //评论id
    private Integer relevance; //评论关联字段
    private String content; //评论内容
    private Integer tableType; //评论表类型
    private Integer type; //评论类型
    private Integer userId; //评论用户的id
    private Integer targetId; //要回复的评论的用户id
//    @JsonFormat(pattern = "yyyy-MM-dd hh:mm", timezone = "GMT+8")
    private Date time; //评论时间

    // 设置评论人的信息
    // 不映射数据库
    @TableField(exist = false)
    private User User; //评论用户
    // 不映射数据库
    @TableField(exist = false)
    private List<Comment> reply; //评论的回复

    // 设置被回复人的名字
    @TableField(exist = false)
    private User targetUser; //被回复人的信息

    // 评论是否被当前登录点赞
    @TableField(exist = false) //此属性不映射数据库
    private Integer isThumbs;

    // 评论点赞数
    @TableField(exist = false) //此属性不映射数据库
    private Integer thumbsCount;
}
